package com.example.test.thread;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * @Description:  Executors.newCacheThreadPool()：可缓存线程池，先查看池中有没有以前建立的线程，如果有，就直接使用。
 *                 如果没有，就建一个新的线程加入池中，缓存型池子通常用于执行一些生存期很短的异步型任务。
 *                 线程池为无限大，当执行当前任务时上一个任务已经完成，会复用执行上一个任务的线程，而不用每次新建线程
 * @Author: 明天
 * @CreateDate: 2019/1/17$ 14:05$
 * @UpdateDate: 2019/1/17$ 14:05$
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 * 参考地址：https://www.toutiao.com/a6646938191863480835/?tt_from=weixin&utm_campaign=client_share&wxshare_count=1&timestamp=1547701010&app=news_article&utm_source=weixin&iid=57315554767&utm_medium=toutiao_android&group_id=6646938191863480835
 */
public class ThreadExecutorService {
    public static void main(String[] args) {
        //创建一个可缓存线程池
        ExecutorService threadpools= Executors.newCachedThreadPool();
        for (int i =0;i<10;i++){
            try {
                //sleep可明显看到使用的是线程池里面以前的线程，没有创建新的线程
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            threadpools.execute(new Runnable() {
                @Override
                public void run() {
                    //打印正在执行的缓存的执行信息
                    System.out.println(Thread.currentThread().getName()+"正在执行。");
                }
            });
        }
    }
}
